﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Linq;
using System.Text;

namespace CityGames
{
    public class Alquiler
    {
        private int codigo;
        private string nombreJuego;
        private string plataformaJuego;
        private decimal precio; 
        private string tipo;

        public decimal Precio
        {
            get { return precio; }
            set { precio = value; }
        }

        public string PlataformaJuego
        {
            get { return plataformaJuego; }
            set { plataformaJuego = value; }
        }

        public string NombreJuego
        {
            get { return nombreJuego; }
            set { nombreJuego = value; }
        }

        public int Codigo
        {
            get { return codigo; }
            set { codigo = value; }
        }

        public string Tipo
        {
            get { return tipo; }
            set { tipo = value; }
        }

        static private CADAlquiler cadAlquiler = new CADAlquiler();

        /*************************************************Funciones Ruben ***********************************************/

        /// <summary>
        /// Constructor por defecto de la clase Alquiler.
        /// Inicializa todos los string a "", y el precio y el codigo a 0.
        /// </summary
        public Alquiler()
        {
            codigo = 0;
            nombreJuego = "";
            plataformaJuego = "";
            precio = 0; 
            tipo = "";
        }

        /// <summary>
        /// Funcion que inserta un alquiler o venta temporalmente en la BD para luego añadirlo a la lista de la compra.
        /// </summary>
        /// <param name="codigo">
        /// El codigo de la copia del juego.</param>
        /// <param name="nombreJuego">
        /// El nombre de la copia del juego.</param>
        /// <param name="plataformaJuego">
        /// La plataforma del juego.</param>
        /// <param name="precio">
        /// El precio que tiene el juego.</param>
        /// <param name="tipo">
        /// El tipo del juego (nuevo, segunda mano o alquiler).</param>
        /// <returns>
        /// Devuelve un booleano que indica si se ha insertado correctamente el juego</returns>
        public bool InsertarBD(int codigo, string nombreJuego, string plataformaJuego, decimal precio, string tipo)
        {
            bool resultado = false;

            try
            {
                resultado = cadAlquiler.InsertarAlquiler(codigo, nombreJuego, plataformaJuego, precio, tipo);
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return resultado;
        }


        /// <summary>
        /// Funcion que devuelve el numero de juegos almacenados en la tabla AlquileresVirtual de la Base de Datos.
        /// </summary>        
        /// <returns>
        /// Devuelve el numero de juegos</returns>
        public int NumeroAlquileres()
        {
            int resultado = 0;

            try
            {
                resultado = cadAlquiler.NumeroAlquileres();
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return resultado;
        }


        /// <summary>
        /// Obtener los juegos almacenados en la tabla AlquileresVirtual de forma paginada
        /// </summary>        
        /// <param name="desde">
        /// Entero que indica desde que número de fila se desea mostrar</param>
        /// <param name="hasta">
        /// Entero que indica hasta que número de fila se desea mostrar</param>
        /// <returns>
        /// Un dataset con los juegos
        /// </returns>
        public DataSet Alquileres(int desde, int hasta)
        {
            DataSet Alquileres = new DataSet();

            try
            {
                Alquileres = cadAlquiler.Alquileres(desde,hasta);
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return Alquileres;
        }


        /// <summary>
        /// Obtener los juegos almacenados en la tabla AlquileresVirtual
        /// </summary>                
        /// <returns>
        /// Un dataset con los juegos
        /// </returns>
        public DataSet AlquileresSinPaginar()
        {
            DataSet Alquileres = new DataSet();

            try
            {
                Alquileres = cadAlquiler.AlquileresSinPaginar();
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return Alquileres;
        }

        /// <summary>
        /// Vaciar la tabla AlquileresVirtual
        /// </summary>  
        public void VaciarTabla()
        {
            try
            {
                cadAlquiler.VaciarTabla();
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        /// <summary>
        /// Quita un juego de la tabla AlquileresVirtual
        /// </summary>        
        /// <param name="codigo">
        /// El codigo del juego que se desea borrar</param>
        public void QuitarAlquilerBD(int codigo)
        {
            try
            {
                cadAlquiler.QuitarAlquilerBD(codigo);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        /// <summary>
        /// Obtener los juegos almacenados en la tabla AlquileresVirtual con su descuento correspondiente si lo tuvieran
        /// </summary>        
        /// <returns>
        /// Un dataset con los juegos
        /// </returns>
        public DataSet AlquileresConPromociones()
        {
            DataSet Alquileres = new DataSet();

            try
            {
                //Alquileres = cadAlquiler.AlquileresConPromociones(desde, hasta);
                Alquileres = cadAlquiler.AlquileresConPromociones();
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return Alquileres;
        }

        /// <summary>
        /// Funcion que devuelve el numero de juegos
        /// </summary>        
        /// <returns>
        /// El numero de juegos
        /// </returns>
        public int NumeroAlquileresConPromociones()
        {
            int resultado = 0;

            try
            {
                resultado = cadAlquiler.NumeroAlquileresConPromociones();
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return resultado;
        }

        /*************************************************Fin Funciones Ruben ***********************************************/
    }
}
